(function () {
    var jquery_version = '2.1.4';
    var site_url = 'http://127.0.0.1:8000/';
    var static_url = site_url + 'static/';
    var min_width = 100;
    var min_height = 100;

    function bookmarklet(msg) {
        // 加载 CSS
        var css = jQuery('<link>');
        css.attr({
            rel: 'stylesheet',
            type: 'text/css',
            href: static_url + 'css/bookmarklet.css?r='
            + Math.floor(Math.random() * 99999999999999999999)
        });
        jQuery('head').append(css)

        // 加载 HTML
        box_html = '<div id="bookmarklet"><a href="#" id="close">&times;</a>' +
            '<h1>选择一个图片：</h1><div class="images"></div></div>';
        jQuery('body').append(box_html);

        // 关闭
        jQuery('#bookmarklet #close').click(function () {
            jQuery('#bookmarklet').remove();
        });

        // 找到图像并显示它们
        jQuery.each(jQuery('img[src$="jpg"]'), function (index, image) {
            if (jQuery(image).width() >= min_width && jQuery(image).height() >= min_height) {
                image_url = jQuery(image).attr('src');
                jQuery('#bookmarklet .images').append('<a href="#"><img src="' + image_url + '"/></a>');
            }
        });

        // 当一个图像被选中打开它的URL
        jQuery('#bookmarklet .images a').click(function (e) {
            selected_image = jQuery(this).children('img').attr('src');
            // 隐藏书签
            jQuery('#bookmarklet').hide();
            // 打开新窗口提交图像
            window.open(site_url + 'images/create/?url=' + encodeURIComponent(selected_image)
                + '&title=' + encodeURIComponent(jQuery('title').text()), '_blank')

        })
    };


    // 检查 jQuery 是否已加载
    if (typeof window.jQuery != 'undefined') {
        bookmarklet();
    } else {
        // 检查冲突
        var conflict = typeof window.$ != 'undefined';
        // 创建脚本并指向Google API
        var script = document.createElement('script');
        script.setAttribute('src', 'http://libs.baidu.com/jquery/' +
            jquery_version + '/jquery.min.js');
        // 将脚本添加到 'head' 进行处理
        document.getElementsByTagName('head')[0].appendChild(script);
        // 创建一种等待脚本加载的方式
        var attempts = 15;
        (function () {
            // 再次检查 jQuery 是否未定义
            if (typeof window.jQuery == 'undefined') {
                if (--attempts > 0) {
                    // 在几毫秒内 Call 自己
                    window.setTimeout(arguments.callee, 250)
                } else {
                    // 加载尝试过多，发送错误
                    alert('加载 jQuery 错误。')
                }
            } else {
                bookmarklet();
            }
        })();
    }
})()
